/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.Util;

import java.io.Serializable;
import java.util.Date;
import java.util.Calendar;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;

@ManagedBean
@ViewScoped
public class MyUtil implements Serializable {    
    int edad;
    String mensaje;

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
    
    public Timestamp getFechaActual() {
        Date fechaAct = Calendar.getInstance().getTime();                
        Timestamp fecha = new Timestamp(fechaAct.getTime());
        //Timestamp fecha = new Timestamp(fechaActual.getYear(), fechaActual.getMonth(), fechaActual.getDate(), fechaActual.getHours(), fechaActual.getMinutes(), fechaActual.getSeconds(), 0);
        return fecha;
    }  

    public void calcularEdad(SelectEvent event) {
        //para calcular la edad a partir de la fecha seleccionada
        Date fechaNac = null;
        try {        
            /**
             * Se puede cambiar la mascara por el formato de la fecha que se
             * quiera recibir, por ejemplo año mes día "yyyy-MM-dd" en este caso
             * es día mes año
             */

            //fechaNac = (Date) new SimpleDateFormat("dd-MM-yyyy").parse(fecha);
            fechaNac = (Date) event.getObject();
            Calendar fechaNacimiento = Calendar.getInstance();
            //Se crea un objeto con la fecha actual
            Calendar fechaAct = Calendar.getInstance();
            //Se asigna la fecha recibida a la fecha de nacimiento.
            fechaNacimiento.setTime(fechaNac);
            //Se restan la fecha actual y la fecha de nacimiento
            int año = fechaAct.get(Calendar.YEAR) - fechaNacimiento.get(Calendar.YEAR);
            int mes = fechaAct.get(Calendar.MONTH) - fechaNacimiento.get(Calendar.MONTH);
            int dia = fechaAct.get(Calendar.DATE) - fechaNacimiento.get(Calendar.DATE);
            //Se ajusta el año dependiendo el mes y el día
            if (mes < 0 || (mes == 0 && dia < 0)) {
                año--;
            }
            //Regresa la edad en base a la fecha de nacimiento
            edad = año;      
            
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Alerta!!", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            edad = 0;
        }
    }
    
    public int calcularEdadFN(String fechaNac) {       
        
        try {        
            /**
             * Se puede cambiar la mascara por el formato de la fecha que se
             * quiera recibir, por ejemplo año mes día "yyyy-MM-dd" en este caso
             * es día mes año
             */
            Calendar fechaNacimiento = Calendar.getInstance();
            //Se crea un objeto con la fecha actual
            Calendar fechaAct = Calendar.getInstance();
            //Se asigna la fecha recibida a la fecha de nacimiento.
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            Date date = formatter.parse(fechaNac);
            fechaNacimiento.setTime(date);
            //Se restan la fecha actual y la fecha de nacimiento
            int año = fechaAct.get(Calendar.YEAR) - fechaNacimiento.get(Calendar.YEAR);
            int mes = fechaAct.get(Calendar.MONTH) - fechaNacimiento.get(Calendar.MONTH);
            int dia = fechaAct.get(Calendar.DATE) - fechaNacimiento.get(Calendar.DATE);
            //Se ajusta el año dependiendo el mes y el día
            if (mes < 0 || (mes == 0 && dia < 0)) {
                año--;
            }
            //Regresa la edad en base a la fecha de nacimiento
            edad = año;       
            return edad;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Alerta!!", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            edad = 0;
            return edad;
        }
    }
    
    
}
